let a = "abcdabcdab";

let arr = a.split("");
let obj = {}; //存对象格式的重复字母数
arr.forEach(e => {
    if (obj[e]) {
        obj[e]++;
    } else {
        obj[e] = 1;
    }
});

console.log(obj);
let res = [];
//拼接结果
for (const key in obj) {
    let s = key.repeat(obj[key]);
    res.push(s);
}
console.log(res);
// let arr = Array.from(a).sort();

// let flag = arr[0]; //重复字母标识
// let res = []; //结果
// let str = ""; //字符串
// arr.forEach((e, index) => {
//     if (flag == e) {
//         str += e;
//     } else {
//         flag = e;
//         res.push(str);
//         str = e
//     }
//     //最后一层
//     if (index == arr.length - 1) {
//         res.push(str);
//     }
//     // console.log(e, flag, str);
// })
// console.log(res);


// 回调地狱
//queryData向后端请求数据
queryData('data1', function(ret) {
    console.log(ret);　　
    queryData('data2', function(ret) {
        console.log(ret);
        queryData('data3', function(ret) {
            console.log(ret);
        });
    });
});
// 使用promise
queryData('data1')
.then((ret) => {
    console.log(ret);
    return queryData('data2');
})
.then((ret) => {
    console.log(ret);
    return queryData('data3');
})
.then((ret) => {
    console.log(ret);
    return queryData('data4');
})

// 深度克隆
